package cn.tedu.Map;/**
 * @Author 金帮嘉诚 @Date 2021-06-22 星期二 13:59
 */
/*本类用于完成集合相关的练习*/
//需求：提示并接受用户输入的一串字符，并统计每个字符出现的次数

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * 知识点
 */
public class TestMap3 {
    public static void main(String[] args) {
        //用键值对统计 字符和出现次数 对应
        /*因为map的K-V具有映射关系，对用字符与字符出现的次数，符合业务
         * 字符不允许重复，所以作为key，是Character类型
         * 字符出现的次数可能重复，所以作为value，是Integer类型*/
        Map<Character, Integer> map = new HashMap<>();
        String input = getString();

        //
        for (int i = 0; i < input.length(); i++) {
            //遍历String，charAt()方法
            char key = input.charAt(i);//key值
//            System.out.println("获取到的第" + (i + 1) + "个字符" + key);

            Integer old_value = map.get(key);//value值
            if (old_value == null) {//不含某key的判断
                map.put(key, 1);//存入
            } else {
                map.put(key, old_value + 1);//只改变value，也用put()
            }
        }
        System.out.println("各个字符出现的次数为：");
        System.out.println(map);

    }

    public static String getString() {
        System.out.println("请输入要统计的字符串：");
        String input = new Scanner(System.in).nextLine();
        return input;
    }
}


